<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<meta name="copyright" content="Copyright (c) IBM Corporation and others 2011, 2013. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1" type="text/css">
<title>Incompatibilities between Eclipse 4.2 and 4.3</title>
</head>

<body>

<h1>Incompatibilities between Eclipse 4.2 and 4.3</h1>

<p>
  Eclipse changed in incompatible ways between 4.2 and 4.3 in ways that affect
  plug-ins. The following entries describe the areas that changed and provide
  instructions for migrating 4.2 plug-ins to 4.3. Note that you only need to look
  here if you are experiencing problems running your 4.2 plug-in on 4.3.
</p>
<p>
See also the list of <a href="../removals.html">deprecated API removals</a> for this release.
</p>

<ol>
	<li><a href="#lucene">New incompatible Lucene version</a></li>
	<li><a href="#oleListeners">OleListeners must not dispose OleEvent arguments</a></li>
	<li><a href="#handlerProcessingAddon">Models created in 4.2 need HandlerProcessAddon added</a></li>
</ol>

<hr>
<!-- ############################################## -->
<h2>1. <a name="lucene">New incompatible Lucene version</a></h2>
<p><strong>What is affected:</strong> Clients that directly reference Lucene
API included in the platform.
</p>
<p><strong>Description:</strong> The Eclipse platform help system has migrated from
Lucene 2.9.1 to Lucene 3.5. This change brings improved performance and many bug fixes in help search.
However, Lucene itself has changed in incompatible ways between their 2.9 and 3.5 releases.
See the <a href="https://lucene.apache.org/core/old_versioned_docs/versions/3_0_3/changes/Changes.html#3.0.0">
Lucene Change Log</a> for complete details.
</p>
<p><strong>Action required:</strong> Clients that directly use Lucene APIs
should refer to the Lucene change log for details on what has changed.
</p>

<!-- ############################################## -->
<h2>2. <a name="oleListeners">OleListeners must not dispose OleEvent arguments</a></h2>
<p><strong>What is affected:</strong> Plug-ins that dispose the arguments (Variants) in received OleEvents.
</p>
<p><strong>Description:</strong> Prior to Eclipse 4.3, the arguments (Variants) in OleEvents were never
disposed by SWT, so an OleListener that disposed these arguments would not have a problem.  While it was never
stated that OleListeners should dispose these arguments, there were example snippets on the SWT page that incorrectly
did this.
<p>As of Eclipse 4.3, SWT now disposes these arguments after all appropriate OleListeners have been notified, in
order to fix a significant memory leak.  As a result, OleListeners that also dispose these arguments can cause
native COM objects to be over-released, which can lead them to be cleaned up prematurely and potentially crash.
</p>
<p><strong>Action required:</strong> Clients that hook OleListeners must ensure that they are not invoking dispose()
on the arguments (Variants) in received OleEvents.
</p>

<h2>3. <a name="handlerProcessingAddon">Models created in 4.2 need HandlerProcessAddon added</a></h2>
<p><strong>What is affected:</strong> All Eclipse 4 RCP applications </p>
<p><strong>Description:</strong> The static method processHierarchy of the E4Workbench class was removed. This method at the
time of this removal supported the dynamically changing contexts in which handlers are executed. It was required to be called
every time you added/removed handlers at runtime. Now this functionality has moved to an add-on.
The add-on is in org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon .
It makes the changes automatically by listening in the event broker. Being an add-on it has the advantage of being
replaceable, in case you don't like the way the processing is done now (though it is not recommended).</p>

<p><strong>Action required: </strong> Remove all calls to E4Workbench.processHierarchy in your application and
add the HandlerProcessingAddon mentioned above to the list of add-ons of your application.
</p>


<!-- ############################################## -->

</body>
</html>